#ifndef _BLOCKBREAKER_GAME_GAMEEVENT_H__
#define _BLOCKBREAKER_GAME_GAMEEVENT_H__

#include <Comm\Include\ISerializable.h>

class GameEvent : public ISerializable
{
public:
    typedef enum
    {
        PLAYER_INPUT_EVENT,
        TIME_EVENT,
        CREATE_SCENE_EVENT,
        INSTALL_BLOCK_EVENT,
        INSTALL_PLAYER_EVENT,
        LOAD_FINISHED_EVENT
    }GameEventType;

    virtual ~GameEvent(void);

    virtual unsigned int serialize(std::ostream &s);

    GameEventType getEventType() const;
    static GameEventType getEventType(std::istream &s);


protected:
    GameEvent(GameEventType t);
    GameEvent(std::istream &s);
    

private:
    GameEventType event_type;
};

#endif // _BLOCKBREAKER_GAME_GAMEEVENT_H__